package com.wlz.demo.producer;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

/**
 * @author wlz
 * @date 2020-10-29
 *   rocketmq 生产端
 */
public class SimpleProduct {

        public static void main(String[] args) throws Exception {
            // 创建一个消息生产者，并设置一个消息生产者组
            DefaultMQProducer producer = new
                    DefaultMQProducer("groupTest");

            // 指定 NameServer 地址
            producer.setNamesrvAddr("192.168.27.133:9876");

            // /初始化 Producer，整个应用生命周期内只需要初始化一次
            producer.start();
            for (int i = 0; i < 10; i++) {
                //创建一条消息对象，指定其主题、标签和消息内容
                Message msg = new Message("topicTest" /* Topic */,
                        "TagA" /* Tag */,
                        ("testMessage"+i).getBytes() /* Message body */
                );

                //如果你要保证你有一系列消息需要有序的话 你只需要把他们这几条消息统一的标识 传递进来就可以了
                //orderid
                //发送消息并返回结果
//                SendResult sendResult = producer.send(msg, new SelectMessageQueueByHash(),"userID");
                SendResult sendResult = producer.send(msg);
                System.out.printf("%s%n", sendResult);
            }
//
//            for (int i = 10; i < 20; i++) {
//                //Create a message instance, specifying topic, tag and message body.
//                Message msg = new Message("test2" /* Topic */,
//                        "TagA" /* Tag */,
//                        ("testMessage"+i).getBytes() /* Message body */
//                );
//                //如果你要保证你有一系列消息需要有序的话 你只需要把他们这几条消息统一的标识 传递进来就可以了
//                //orderid
//                //                //Call send message to deliver message to one of brokers.
//                SendResult sendResult = producer.send(msg, new SelectMessageQueueByHash(),"2");
//                System.out.printf("%s%n", sendResult);
//            }
            //  一旦生产者实例不再被使用则将其关闭，包括清理资源，关闭网络连接等
            producer.shutdown();
        }
}
